package demo06;

import java.io.File;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.Arrays;

class Person implements Serializable {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public Person() {
    }

    //给定实体类Person p=new Person(“张飞”，18)，使用反射给name属性、age属性赋值赋值为 “刘备”，34

    public static void main(String[] args) throws Exception {

//        Person p=new Person("张飞",18);
//        System.out.println("姓名："+p.getName()+",年龄："+p.getAge());
//
//        Class p_class = p.getClass();
//
//        Field nameField = p_class.getDeclaredField("name");
//        nameField.setAccessible(true);
//        nameField.set(p,"刘备");
//
//        Field nameField1 = p_class.getDeclaredField("age");
//        nameField1.setAccessible(true);
//        nameField1.setInt(p,34);
//
//        System.out.println("姓名："+p.getName()+",年龄："+p.getAge());
        //给定实体类Person，使用反射获取实体类的所有包，父类，构造方法，普通方法，属性信息
        Person p=new Person();
        Class p_class = p.getClass();

        System.out.println(p_class.getPackage().getName());

        System.out.println(p_class.getSuperclass());

        System.out.println(Arrays.toString(p_class.getConstructors()));

        System.out.println(Arrays.toString(p_class.getDeclaredMethods()));

        System.out.println(Arrays.toString(p_class.getDeclaredFields()));


    }
}
